﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using ControlStock.Dominio;

namespace ControlStock.Repositorio
{
    public class BaseTrabajoRepositorio
    {
        Conexion Conn;
        public BaseTrabajoRepositorio()
        {
            Conn = new Conexion();
        }

        public int Agregar(Bases Base)
        {
            String Consulta = " Insert into BASE_TRABAJO (Ba_Nombre, Ba_Estado, Usu_Id) ";
            Consulta += " VALUES ('" + Base.Nombre_Base + "'," + (Base.Estado_Base ? 1 : 0) + "," + Base.Usuario.Id_Usu + ") Select @@Identity ";
            return Conn.Insertar(Consulta);
        }

        public void Modificar(Bases Base)
        {
            String Consulta = " Update BASE_TRABAJO Set Ba_Nombre = '" + Base.Nombre_Base + "', Ba_Estado = " + (Base.Estado_Base ? 1 : 0) + ", Usu_Id = " + Base.Usuario.Id_Usu;
            Consulta += " Where Ba_Id = " + Base.Id_Base;
            Conn.ModificarEliminar(Consulta);
        }

        public Bases Buscar(int IdBase)
        {
            String Consulta = " Select * From BASE_TRABAJO Where Ba_Id = " + IdBase;
            DataTable Tabla = Conn.Buscar(Consulta);
            if (Tabla.Rows.Count == 1)
            {
                return this.Mapear(Tabla.Rows[0]);

            }
            else
            {
                return null;
            }
        }

        public List<Bases> Listar()
        {
            String Consulta = " Select * From BASE_TRABAJO ";
            DataTable TablaUsuarios = Conn.Buscar(Consulta);
            List<Bases> ListaBases = new List<Bases>();
            foreach (DataRow Fila in TablaUsuarios.Rows)
            {
                ListaBases.Add(this.Mapear(Fila));
            }
            return ListaBases;
        }


        private Bases Mapear(DataRow Fila)
        {
            Bases Base_Map = null;
            if (Fila != null)
            { 
                 Base_Map = new Bases();
                 Base_Map.Id_Base = Fila.IsNull("Ba_Id") ? 0 : Convert.ToInt32(Fila["Ba_Id"]);
                 Base_Map.Nombre_Base = Fila.IsNull("Ba_Nombre") ? "": Fila["Ba_Nombre"].ToString();
                 Base_Map.Estado_Base = Fila.IsNull("Ba_Estado")?false: Convert.ToBoolean (Fila["Ba_Estado"]);
                 UsuarioRepositorio repoUsuario = new UsuarioRepositorio();
                 Base_Map.Usuario = repoUsuario.Buscar(Fila.IsNull("Usu_Id") ? 0 : Convert.ToInt32(Fila["Usu_Id"]));
                
            }
            return Base_Map;
                    
        }
    }
}
